Fix tracker promise from throwing when set multiple times #235
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Two issues:
std::deque::size()should be guarded as it's not thread safe. The size() is computed via pointer diff (finish-start) of the queue itself and it returns garbage in a multi-threaded access scenario.promise_already_satisfiedexception. This in itself is not an error, however it prevents thepending_acksfrom being properly decremented and the flush eventually blocks forever as thepending_acksmismatch.@mfontanini please prioritize this if you can. Much appreciated!!